# RUN: llvm-mc -arch=amdgcn -mcpu=tonga -disassemble -show-encoding < %s | FileCheck %s -check-prefix=VI

# VI: s_dcache_wb  ; encoding: [0x00,0x00,0x84,0xc0,0x00,0x00,0x00,0x00]
0x00 0x00 0x84 0xc0 0x00 0x00 0x00 0x00

# VI: s_dcache_wb_vol ; encoding: [0x00,0x00,0x8c,0xc0,0x00,0x00,0x00,0x00]
0x00 0x00 0x8c 0xc0 0x00 0x00 0x00 0x00

# VI: s_memrealtime s[4:5] ; encoding: [0x00,0x01,0x94,0xc0,0x00,0x00,0x00,0x00]
0x00 0x01 0x94 0xc0 0x00 0x00 0x00 0x00

# VI: s_store_dword s1, s[2:3], 0xfc  ; encoding: [0x41,0x00,0x42,0xc0,0xfc,0x00,0x00,0x00]
0x41 0x00 0x42 0xc0 0xfc 0x00 0x00 0x00

# VI: s_store_dword s1, s[2:3], 0xfc glc ; encoding: [0x41,0x00,0x43,0xc0,0xfc,0x00,0x00,0x00]
0x41 0x00 0x43 0xc0 0xfc 0x00 0x00 0x00

# VI: s_store_dword s1, s[2:3], s4    ; encoding: [0x41,0x00,0x40,0xc0,0x04,0x00,0x00,0x00]
0x41 0x00 0x40 0xc0 0x04 0x00 0x00 0x00

# VI: s_store_dword s1, s[2:3], s4 glc ; encoding: [0x41,0x00,0x41,0xc0,0x04,0x00,0x00,0x00]
0x41 0x00 0x41 0xc0 0x04 0x00 0x00 0x00

# VI: s_load_dword s1, s[2:3], 0xfc glc ; encoding: [0x41,0x00,0x03,0xc0,0xfc,0x00,0x00,0x00]
0x41 0x00 0x03 0xc0 0xfc 0x00 0x00 0x00

# VI: s_load_dword s1, s[2:3], s4 glc ; encoding: [0x41,0x00,0x01,0xc0,0x04,0x00,0x00,0x00]
0x41 0x00 0x01 0xc0 0x04 0x00 0x00 0x00

# VI: s_buffer_store_dword s10, s[92:95], m0 ; encoding: [0xae,0x02,0x60,0xc0,0x7c,0x00,0x00,0x00]
0xae 0x02 0x60 0xc0 0x7c 0x00 0x00 0x00

# VI: s_buffer_store_dwordx2 s[10:11], s[92:95], m0 ; encoding: [0xae,0x02,0x64,0xc0,0x7c,0x00,0x00,0x00]
0xae 0x02 0x64 0xc0 0x7c 0x00 0x00 0x00

# VI: s_buffer_store_dwordx4 s[8:11], s[92:95], m0 glc ; encoding: [0x2e,0x02,0x69,0xc0,0x7c,0x00,0x00,0x00]
0x2e 0x02 0x69 0xc0 0x7c 0x00 0x00 0x00

# VI: s_buffer_load_dword s10, s[92:95], m0 ; encoding: [0xae,0x02,0x20,0xc0,0x7c,0x00,0x00,0x00]
0xae 0x02 0x20 0xc0 0x7c 0x00 0x00 0x00

# VI: s_buffer_load_dwordx2 s[10:11], s[92:95], m0 ; encoding: [0xae,0x02,0x24,0xc0,0x7c,0x00,0x00,0x00]
0xae 0x02 0x24 0xc0 0x7c 0x00 0x00 0x00

# VI: s_buffer_load_dwordx4 s[8:11], s[92:95], m0 glc ; encoding: [0x2e,0x02,0x29,0xc0,0x7c,0x00,0x00,0x00]
0x2e 0x02 0x29 0xc0 0x7c 0x00 0x00 0x00

# VI: s_atc_probe 7, s[4:5], s0 ; encoding: [0xc2,0x01,0x98,0xc0,0x00,0x00,0x00,0x00]
0xc2,0x01,0x98,0xc0,0x00,0x00,0x00,0x00

# VI: s_atc_probe 0, s[4:5], 0x0 ; encoding: [0x02,0x00,0x9a,0xc0,0x00,0x00,0x00,0x00]
0x02,0x00,0x9a,0xc0,0x00,0x00,0x00,0x00

# VI: s_atc_probe_buffer 1, s[8:11], s0 ; encoding: [0x44,0x00,0x9c,0xc0,0x00,0x00,0x00,0x00]
0x44,0x00,0x9c,0xc0,0x00,0x00,0x00,0x00

# VI: s_atc_probe_buffer 0, s[8:11], s101 ; encoding: [0x04,0x00,0x9c,0xc0,0x65,0x00,0x00,0x00]
0x04,0x00,0x9c,0xc0,0x65,0x00,0x00,0x00

#===------------------------------------------------------------------------===#
# Unsigned 20-bit offsets
#===------------------------------------------------------------------------===#

# VI: s_atc_probe 7, s[4:5], 0xfffff ; encoding: [0xc2,0x01,0x9a,0xc0,0xff,0xff,0x0f,0x00]
0xc2,0x01,0x9a,0xc0,0xff,0xff,0x0f,0x00

# VI: s_atc_probe_buffer 1, s[8:11], 0xfffff ; encoding: [0x44,0x00,0x9e,0xc0,0xff,0xff,0x0f,0x00]
0x44,0x00,0x9e,0xc0,0xff,0xff,0x0f,0x00

# VI: s_load_dword s1, s[2:3], 0xfffff ; encoding: [0x41,0x00,0x02,0xc0,0xff,0xff,0x0f,0x00]
0x41,0x00,0x02,0xc0,0xff,0xff,0x0f,0x00

# VI: s_store_dword s1, s[2:3], 0xfffff ; encoding: [0x41,0x00,0x42,0xc0,0xff,0xff,0x0f,0x00]
0x41,0x00,0x42,0xc0,0xff,0xff,0x0f,0x00

# VI: s_buffer_store_dword s10, s[92:95], 0xfffff ; encoding: [0xae,0x02,0x62,0xc0,0xff,0xff,0x0f,0x00]
0xae,0x02,0x62,0xc0,0xff,0xff,0x0f,0x00

#===------------------------------------------------------------------------===#
# Decoding of invalid (21-bit) buffer offsets
#===------------------------------------------------------------------------===#

# VI: s_store_dword s1, s[2:3], 0xfffff ; encoding: [0x41,0x00,0x42,0xc0,0xff,0xff,0x0f,0x00]
0x41,0x00,0x42,0xc0,0xff,0xff,0x1f,0x00

# VI: s_buffer_store_dword s10, s[92:95], 0xfffff ; encoding: [0xae,0x02,0x62,0xc0,0xff,0xff,0x0f,0x00]
0xae,0x02,0x62,0xc0,0xff,0xff,0x1f,0x00
